package com.yidu.hbatsams.action.emp;

import com.yidu.hbatsams.domain.AtsBaseSport;
import com.yidu.hbatsams.domain.AtsEmpCoach;
import com.yidu.hbatsams.domain.User;
import com.yidu.hbatsams.domain.vo.UserVo;
import com.yidu.hbatsams.service.AtsBaseSportService;
import com.yidu.hbatsams.service.emp.AtsEmpCoachService;
import com.yidu.hbatsams.service.emp.AtsEmpExpertService;
import com.yidu.hbatsams.utils.Message;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
import java.text.SimpleDateFormat;
import java.util.*;

/**
 * @描述：教练的Action
 * @backage:com.yidu.hbatsams.action
 * @Author: 石嘉澄
 * @Date: 2019/11/30
 **/
@Controller
@RequestMapping("/UserseControllerCoach")
public class AtsEmpCoachController {
    /**
     * 调用教练员Service接口
     */
    @Resource
    AtsEmpCoachService atsEmpCoachService;
    /**
     * 调用运动项目Service接口
     */
    @Resource
    AtsBaseSportService atsBaseSportService;
    /**
     * 调用专家Service接口
     */
    @Resource
    AtsEmpExpertService atsEmpExpertService;

    /**
     * 查询所有加模糊查询
     * @param pageNum 当前页
     * @param pageSize 长度
     * @param coachName 教练员名称
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @return 教练员信息的集合
     */
    @ResponseBody
    @RequestMapping("selectAll")
    public Map<String,Object> findAll(@RequestParam("page") Integer pageNum, @RequestParam("limit") Integer pageSize, String coachName,String startTime,String endTime){
        //创建HashMap<String,Object>
        Map<String,Object> map = new HashMap<String,Object>();
        //调用查询所有的分页方法
        Long count = atsEmpCoachService.count();
        //调用查询所有教练员的方法
        List<AtsEmpCoach> list = atsEmpCoachService.selectAll(pageNum,pageSize,coachName,startTime,endTime);
        //给map赋值code,msg,count,data
        map.put("code", 0);
        map.put("msg", "");
        map.put("count", count); // 总行数
        map.put("data", list);
        //返回map集合
        return map;
    }

    /**
     * 根据ID查询
     * @param coachId
     * @return
     */
    @ResponseBody
    @RequestMapping("findById")
    public AtsEmpCoach selectId(Integer coachId){
        return atsEmpCoachService.findById(coachId);
    }

    /**
     * 删除
     * @return
     */
    @ResponseBody
    @RequestMapping("deleteByPrimaryKey")
    public Message deleteById(Integer coachId){
        //创建message对象
        Message msg = new Message();
        //调用根据ID查询教练员的方法
        AtsEmpCoach coach = atsEmpCoachService.findById(coachId);
        //调用删除用户表的教练员信息的方法  2
        atsEmpExpertService.deleteClerk("2",String.valueOf(coach.getCoachId()));
        //调用删除教练员信息的方法
        atsEmpCoachService.deleteByPrimaryKey(coachId);

        msg.setNum(1);
        msg.setMsg("删除成功！");
        //返回msg对象
        return msg;
    }

    /**
     * 批量删除
     * @param coachIds
     * @return
     */
    @ResponseBody
    @RequestMapping("deleteMany")
    public Message deleteMoreById(String coachIds){
        //创建字符串数组
        String[] ids = null;
        //创建msg对象
        Message msg = new Message();
        msg.setNum(1);
        //如果传过来的对象不为空
        if(coachIds!=null && !"".equals(coachIds)){
            //根据，分割
            ids=coachIds.split(",");
        }
        //循环遍历ids
        for (int i = 0; i < ids.length; i++){
            //获取当前教练员id
            String coachId = ids[i];
            //调用删除用户表的教练员信息的方法  2
            atsEmpExpertService.deleteClerk("2",String.valueOf(coachId));
            //调用删除教练员信息的方法
            atsEmpCoachService.deleteByPrimaryKey(Integer.valueOf(coachId));
        }
        msg.setMsg("操作成功");
        //返回msg对象
        return msg;
    }

    /**
     * 新增加修改
     * @param record 教练员对象
     * @param session HttpSession对象
     * @return
     */
    @ResponseBody
    @RequestMapping("addUpdate")
    public Message insertUpdate(AtsEmpCoach record, HttpSession session ){
        //创建mes对象
        Message mes = new Message();
        //创建User用户对象
        User user = new User();
        //创建Date日期对象
        Date date = new Date();
        //设置日期的格式SimpleDateFormat("yyyy-MM-dd :hh:mm:ss");
        SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy-MM-dd :hh:mm:ss");
        //设置ID为UUID.randomUUID().toString().replaceAll("-","");
        String uuid = UUID.randomUUID().toString().replaceAll("-","");
        //通过session获取UserVo对象
        UserVo userTwo = (UserVo) session.getAttribute("user");
        //获取前台的项目的值转为整数类型
        int sportName = Integer.valueOf(record.getExpertSpecia());
        //根据项目名称查询项目ID
        AtsBaseSport sport = atsBaseSportService.findById(sportName);
        //吧体育项目设置到ATS参数中
        record.setExpertSpecia(String.valueOf(sport.getSportId()));
        //如果传过来的教练员ID不为空且存在
        if(record.getCoachId() != null && record.getCoachId() > 0){
            //查询到修改前的教练员数据
            AtsEmpCoach coach = atsEmpCoachService.findById(record.getCoachId());
            //判断coach和record的项目ID ！
            if(coach.getExpertSpecia() != record.getExpertSpecia()){
                    ////调用查询用户表信息的方法findClerk  2
                    User userThree = atsEmpExpertService.findClerk("2",String.valueOf(coach.getCoachId()));
                    //用来区分表，1 领导，2 教练员，3 专家， 4 运动员
                    user.setCompanyId("2");
                    //设置用户表的职业为教练
                    user.setCompanyName("教练员");
                    //设置用户表的名称
                    user.setUserName(record.getCoachName());
                    //设置用户表的手机号
                    user.setUserPhone(record.getPhone());
                    //设置用户表的教练员ID
                    user.setClerkId(String.valueOf(record.getCoachId()));
                    //设置用户表的教练员名称
                    user.setClerkName(record.getCoachName());
                    //设置用户表的是否有效
                    user.setUserValidity("有效");
                    //设置用户表的创建时间
                    user.setUserTime(dateFormat.format(date));
                    //设置用户表创建人
                    user.setUserPeople(user.getUserName());
                    //设置用户表的ID
                    user.setUserId(userThree.getUserId());

            }
            //调用修改用户表信息的方法
            atsEmpExpertService.updateByPrimaryKeySelective(user);
            //设置教练表的的创建人
            record.setCreater(userTwo.getUserName());
            //调用修改教练表的方法
            atsEmpCoachService.updateByPrimaryKey(record);
        //不存在，进入新增操作
        }else if(record.getCoachId() == null){
            //设置教练表创建人
            record.setCreater(userTwo.getUserName());
            //调用教练表的新增方法
            atsEmpCoachService.insert(record);
            //调用UUID的方法设置用户表ID
            user.setUserId(uuid);
            //设置用户表的用户名
            user.setUserName(record.getCoachName());
            //设置用户表的密码
            user.setUserPwd("123456");
            //用来区分表，1 领导，2 教练员，3 专家， 4 运动员
            user.setCompanyId("2");
            //设置用户表的职业
            user.setCompanyName("教练员");
            //设置用户表教练员的ID
            user.setClerkId(String.valueOf(record.getCoachId()));
            //设置用户表教练的名称
            user.setClerkName(record.getCoachName());
            //设置是否有效
            user.setUserValidity("有效");
            //设置用户的创建时间
            user.setUserTime(dateFormat.format(date));
            //设置用户创建人
            user.setUserPeople(user.getUserName());
            //调用用户的新增方法
            atsEmpExpertService.insert(user);
            mes.setNum(1);
        }
        mes.setMsg("操作成功！");
        //返回mes对象
        return mes;
    }
    /**
     * 查询项目名称
     * @return
     */
    @ResponseBody
    @RequestMapping("findAllSportName")
    public List<AtsBaseSport>findSportName(){
        return atsBaseSportService.findAllSportName();
    }
}
